home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 6: Level 6
/
17 Bit - Level 6 (1998)(Epic Marketing)[!].iso
/
quartz
/
q1174.dms
/
q1174.adf
/
runlame_v1.28
/
docs
/
RunLameInfiltrator_V1.6.doc
< prev
next >
Wrap
Text File
|
1993-08-25
|
21KB
|
462 lines
____________________________________________________________________________
$VER: RunLameInfiltrator V 1.6 documentation (© by Bilbo the first of Hypenosis on 25.08.93)
____________________________________________________________________________
RunLameInfiltrator
==================
(FileLinker/FileUnlinker)
Copyright 1992-1993 by Bilbo the first
Accept this or delete the complete package now:
----------------------------------------------
This software is NOT in the Public Domain, NOT Freeware and NOT Shareware.
There are NO warranties, either expressed or implied, with respect to the
software, its quality, performance, merchantability, or fitness for any
particular purpose. This software is provided "as is" and the entire risk
as to its quality and performance is with the user. The author of this
software shall NOT be liable for errors contained in the software or the
software's documentation, or for incidental or consequential damages of any
kind in connection with the performance, use or posession of this software.
The use of undocumented features/commands is not permitted except with
permission from the author, and the author is in NO way responsible for
consequences thereof. Anyone may use it for private purposes, and it may be
given away for free, as long as it is NOT part of any deal involving
purchases; and fees for copying and/or distribution, and/or fees for disks
exceeding the actual market price for an empty disk of the same
brand/quality is to be considered as commercial exploitation of this
software, and an infringement of the Copyrights (©) of the author. The
right to use this software and/or its documentation for private purposes may
or may NOT be restricted by additional copyrights and/or registration
conditions. If given away under above (or below) conditions, the receiver
in NO way receives the ownership of the program itself, but may only be
licenced to use it if above and below conditions are met. If these rules
infringes the local law and/or rights of any area, political or
geographical, this software is NOT to be used and/or distributed in these
areas.
For further license and terms for software originating from Bilbo the first
consult the file Copyright.notice which came with this package.
This package is PrayWare, please read the file PrawWare.license.
Table of contents:
-----------------
The aim of the game
Features
The bad news
How to use RunLameInfiltrator
How to use FileLinker/FileUnlinker
Configuring RunLameInfiltrator
Problems - solutions - corner
Known bugs
Future plans
History
Thanks, greetings
The aim of the game:
-------------------
Do you run your system using another screenmode than PAL or NTSC, for
example EURO72 or an AGA specific screenmode? Have you ever tried to start
a game or demo from within this screenmode? Have you ever been angry about
those programmers who do not stick to the guidelines of programming thus
producing programs which are not aware of the screenmode they were started
out of?
Do you have an Amiga with 68010, 68020, 68030 or 68040 processor? Did you
ever curse those socalled coders whose programs crash your computer when you
didn't disable the processor's caches and forgot to move the vector base
register back to $0.l?
Lame programming is the disease, RunLameInfiltrator is the cure!
NEVER start RunLameInfiltrator as stand-alone-program, it definitely WILL
crash your system. RunLameInfiltrator MUST be linked to another program to
work correctly. This process is called `infiltration' in the following, and
the resulting file of linking RunLameInfiltrator to a program is called
`infiltrated program'.
RunLameInfiltrator is a Kick1.3+ tool, it may work under Kick1.0/1.1/1.2,
but I cannot give any warranty for this. RunLameInfiltrator is 100%
pc-relative and reentrant Assembler code, so you can link it to pure
programs and they will stay pure after linking.
Just after having degraded the display and the CPU RunLameInfiltrator starts
the program it has been linked to. When the program it has been linked to
has been finished the display and CPU state is restored to the same as
before starting the infiltrated program.
Summarizing we can say RunLameInfiltrator is a multitasking friendly
temporary system degrader which, linked permanently to files, may let some
bad behaving programs run in your system's environment (but can't give any
guarantee). If some of those `lame' programs don't run though
RunLameInfiltrator has been used, they are on a higher lameness-level, which
can't be fixed by RunLameInfiltrator (this is definitely not a bug of
RunLameInfiltrator).
I do write demos myself and you can believe, I DO KNOW how to write a proper
startup code. Consider RunLameInfiltrator beeing a startup code.
Features:
--------
The {}'s inform you about the needed system configuration for a feature.
·Disabling of all processor caches, burst and copyback modes.
{68020, 68030[EC], 68040[EC]}
·Moving vector base register (VBR) to location $0.
{68010, 68020, 68030[EC], 68040[EC]}
·Degrading display's screenmode to simulate old chipset (OCS).
{ECS, AGA}
·Degrading sprite resolution to simulate old chipset.
{AGA}
·Turning off sprites in a system friendly manner.
{OCS, ECS, AGA}
·Permanent fix for lame programs. Fix can be removed.
·Infiltration of pure programs preserves the reentry ability.
·Infiltration of pc-relative programs preserves the location relativity.
·Works under Kickstarts 1.3, 1.4, 2.04, 3.0 and 3.1.
·Due to 100% system conform and system friendly algorithms, future system
compatibility is as high as possible. Furthermore the multitasking
environment is not hurt or damaged by the code. All degrading is done as
smart as possible, and the code did never crash during beta testing.
·verified, tested and safe (100% assembler) code resulted in a very short
binary (so the infiltrated programs only become a little longer).
Sounds great? YAH - Yet another hype? Hypenosis - Better believe the hype!
But keep on reading, here comes...
The bad news:
------------
·The infiltrated programs' code is changed permanently (but not
irreversible). If you don't like this, use RunLame.
·No GUI for FileLinker and FileUnlinker.
·Dangerous FileUnlinker tool (if you don't know what you are doing).
·The updating of infiltrated programs is slightly uncomfortable (unlink,
and link again).
·Though the code worked very well during the beta testing phase, there
might be nasty bugs.
·RunLameInfiltrator can't be used to fix non-DOS trackloading demos, for I
don't want to support this kind of loaders. I usally like to keep good
demos on my harddisk, which is not directly possible with `trackmos'. So
I don't keep lame coded `trackmos'.
·The documentation often might use improper terms. Please excuse this, for
I am not a native english speaker. If you want to improve the
documentation, please contact me.
How to use RunLameInfiltrator:
-----------------------------
In comparison to RunLame which is included in this package,
RunLameInfiltrator performs the following actions (which are RunLame's
default options):
S = SCREEN : degrade display
V = VISIBLE : the current display stays visible
NC = NOCACHE : disable instruction & data cache
NIC = NOINSTCACHE : disable instruction cache
NDC = NODATACACHE : disable data cache
NB = NOBURST : disable instruction & data burst mode
NIB = NOINSTBURST : disable instruction burst mode
NDB = NODATABURST : disable data burst mode
NCB = NOCOPYBACK : disable copyback mode
NEC = NOEXTERNALCACHE : disable external caches
NVBR = VBRTO0 : move VBR to $0.L
CL = COMMANDLINE cmd : cmd is executed, where cmd is the program
RunLameInfiltrator has been linked to
The above explained options are active during the execution of `cmd' and the
changed settings of your system are reset to the state active before. So if
you know that for example the demo called `ObsoleteFX' will not run on your
normal system configuration, infiltrate RunLameInfiltrator to `ObsoleteFX'
and try if it will work. To link RunLameInfiltrator to `ObsoleteFX', you
can use the following procedure:
FileLinker RunLameInfiltrator name_of_lame_program name_of_output_program
(name_of_output_program is called `the infiltrated program')
In this special case use:
FileLinker RunLameInfiltrator ObsoleteFX ObsoleteFX.rli
Now try if the infiltrated program works on your system. When the
programmer(s) of the un-infiltrated program were too lame it will of course
not work :-). Assuming that ObsoleteFX.rli now works on your system, the
following will happen when ObsoleteFX.rli is started:
assumed system settings before starting ObsoleteFX.rli:
data cache active | instruction cache active
data burst mode active | instruction burst mode inactive
external caches inactive | copyback mode active
VBR in Fast RAM at position p
system settings during execution of ObsoleteFX:
data cache inactive | instruction cache inactive
data burst mode inactive | instruction burst mode inactive
external caches inactive | copyback mode inactive
VBR at $0.l
screenmode changed to PAL,
sprite resolution changed to lores and sprites turned off
system settings after execution of ObsoleteFX.rli:
data cache active | instruction cache active
data burst mode active | instruction burst mode inactive
external caches inactive | copyback mode active
VBR in Fast RAM at position p
How to use FileLinker/FileUnlinker:
----------------------------------
At this point I give a short introduction to the programs
FileLinker/FileUnlinker, which I have written a long time ago.
FileLinker/FileUnlinker is not pc-relative, nor is it reentrant, so you
can't make it resident. It can't be started from the Workbench because it
doesn't include the Workbench startup code. FileLinker/FileUnlinker works
on Kick 1.3+, it may work on earlier Kickstart versions, but I cannot give
any warranty for this. Both programs may contain bugs and do not represent
my current programming skills (in fact when I read the source lately it gave
me nightmares). But because in all the time I was using both programs no
bugs have been found, I just release both programs unchanged with this
package. An easier to use and similar tool I have written when I finished
FileLinker/FileUnlinker. This advanced tool is called FileChainer and has
been released to the public, so when you want to link normal programs, get
FileChainer for this purpose. In the case of RunLameInfiltrator it is not
possible to use FileChainer, so we have to use the both older and much more
uglier programs. Of course you can use any other known program that is
doing the same, but, I don't know of any other released program that could
have been used instead.
What is FileLinker doing exactly? FileLinker is able to insert a ONE HUNK
executable file as first hunk into the hunk collection of another executable
file. The inserted hunk will be started on execution of the resulting file.
This first hunk must execute the other hunks itself, if this is desired.
You see, that abilites of FileLinker are slightly restricted, but it is
exactly what is needed to infiltrate RunLameInfiltrator into a program.
To infiltrate RunLameInfiltrator to a program use:
FileLinker RunLameInfiltrator program_name new_program_name
FileUnlinker irreversibly removes the first hunk of an executable file, so
RunLameInfiltrator can be removed from an infiltrated program. ATTENTION
FileUnlinker doesn't check if the first hunk of the programm that shall be
processed really is RunLameInfiltrator, so use of FileUnlinker on an
un-infiltrated program results in data loss and the programm is
irretrievably destroyed. Be careful with FileUnlinker in your own interest.
You do best if you check with the Version CLI command of C= if a program
really is infiltrated, before you unlink any hunks of it.
To remove RunLameInfiltrator from an infiltrated program use:
FileUnlinker infiltrated_program_name removed_program_name
Example:
FileLinker RunLameInfiltrator FooBar FooBar.rli
FileUnlinker FooBar.rli FooBar2
FooBar2 should be exactly the same as FooBar now.
Configuring RunLameInfiltrator:
------------------------------
You can't take influence on what RunLameInfiltrator itself is doing. But
this chapter describes how to integrate RunLameInfiltrator into well known
utility environments.
Directory Opus:
Enter the configuration module and the Button section. Press one of the
still unused buttons. Enter `Infiltrate' for |Name| string gadget. Make a
|New entry| which is |AmigaDOS|. Enter `[path]FileLinker
[path]RunLameInfiltrator {f}' in the entry string gadget (replace [path] by
the path were the appropriate file is located). Enter |Stack size| `4000',
|Priority| `0', |Close delay| `-1'. Uncheck all entries in the |Flags...|
listview gadget. Check |Output window| and |Do all files| in the listview
gadget. Click |Okay|.
Click on another free button. Enter `Unlink' for |Name| string gadget.
Make a |New entry| which is |AmigaDOS|. Enter `[path]FileUnlinker {f}' in
the entry string gadget (replace [path] by the path were the appropriate
file is located). Enter |Stack size| `4000', |Priority| `0', |Close delay|
`-1'. Uncheck all entries in the |Flags...| listview gadget. Check |Output
window| and |Do all files| in the listview gadget. Click |Okay|.
Save your new configuration. Now you should have 2 new buttons in the
button bar. The `Infiltrate' button links RunLameInfiltrator to all
selected files. Make sure the files are not write and delete protected.
The `Unlink' button is somewhat DANGEROUS. It will strip the first hunk of
each selected file. Make sure the files you want to dehunk are not write
and delete protected. THE HUNK STRIPPED OFF THE FILES IS NOT RECOVERABLE,
SO THINK TWICE BEFORE YOU PRESS THIS BUTTON!!
Problems - solutions - corner:
----------------------------
·If you got this error message:
Screenmode degrading failed!
Forbid all promotion utilities to promote:
"RunLameInfiltrator (© by Bilbo 1st of Hypenosis)"
Display of this lame program might be trashed!
Then you have probably installed one of the screenmode promotion utilities
(fi. The Promotor, NewMode, ForceMonitor, PKludge). This promotion tool
will then promote the compatibility screen too, what is a really stupid
idea. You should prevent the promotion utility from promoting all screens
with the title "RunLameInfiltrator (© by Bilbo 1st of Hypenosis)".
·The sprite DMA shows weird patterns, though you infiltrated the program
(which should turn off the sprites, too). If this happens, one of the
currently open windows became active. All windows have an own pointer
image, which becomes active on window activation. You may have installed
an AutoPointer/SunMouse utility which activated a window after the sprites
have already been turned off. Avoid this by disabling the apropriate
application (the window-activating one). Another possibility is, that the
infiltrated program opened a window which became active. You can't easily
work around the latter problem.
·The program you want to infiltrate is self-detaching and the settings of
RunLameInfiltrator are only valid until the program has detached itself.
If the program has an option to turn off detaching, then use this option
at starting the program to prevent detach. Otherwise, bad luck. Some
self-detaching programs even refuse to work after having been infiltrated.
Other programs work totally okay after beeing infiltrated. The behaviour
depends on the detaching mechanism used by the program.
·You have Enforcer running and your system always hangs when you start an
infiltrated Program. See the Knows Bugs section for an explanantion for
this phenomenon. Quit Enforcer before you start an infiltrated program.
Known bugs:
----------
·If Enforcer is running while RunLameInfiltrator is trying to move the VBR
to $0.l, the machine hangs. Of course this should not happen, I guess
this happens because some system configurations redirect the Enforcer
output to a window, and when RunLameInfiltrator copies the $0-$400 page
this causes a whole bunch of Enforcer hits. I guess this is a bit too
much for the Enforcer window, but I am not sure about this. Normally
there should be reported several accesses to the addresses $0-$400,
because RunLameInfiltrator MUST save vectors that it is going to change,
in order to restore them when leaving (should cause some more Enforcer
hits). I can't work around these Enforcer hits, RunLameInfiltrator MUST
access these vectors on low level, sorry if this is annoying you.
Future plans:
------------
·Emulation of fake fast RAM at $C00000 on systems which have a MMU
installed. For this purpose I rely on information about MMU programming,
which is not yet available to me. If you want to help me, send me
information.
·NoFastMem, 1mb/.5mb chip mem memory reduction features.
·I still need a native english speaker to correct my lousy english in the
documentations for RunLameInfiltrator.
·Do you have any suggestions (to improve RunLameInfiltrator or the
documentation)?
History:
-------
Refer to the file `RunLameInfiltrator.history' which is distributed together
with the RunLameInfiltrator package. I thought that history became a bit
massive and most `Joe Average' users won't be interested in it anyway (those
now might delete it if they don't need it, but if they wanna distribute
RunLameInfiltrator to others, they have to include
RunLameInfiltrator.history).
Thanks, greetings:
-----------------
·Thanks, Jesus Christ for being the god who cares about us all.
·Thanks and love to my girlfriend for being such a patient person, may the
lord bless thee and protect thee.
·Greets to Zaphod Beeblebrox of Hypenosis (letz do the hype :-).
·HOARS to ALFred, tète de tomate, greets to Zenith members, too.
·U4ia, may the Lord show you, that he'll never forget about you. This is
no hype, you got the vibe, man.
·Thanx to Delirium for their help. Without you it would have taken me much
more longer to implement my first GUI.
·Thanx and greets to the brave beta testers (did I forget someone?): Zap,
ALFred, Savage, Dense, Sphinx, Milano, Slammer, Kryss, Andemar, Mnemo,
Skull, Ikke, Gio, SteveVai, Starfox, Gimli, KicStart, Tirreg, Martin.
(list in no specific order).
·Greets to all the nice pals on irc (Zop, Gucky, Outland, Gateway, Janne,
Juggi, Advance, Goldrnr, Trooper1, Shocker, Mag, VAG, duggy, and all I
know but forgot now (list in no specific order).
·I can't resist: Comrade, if you really think you HAVE TO write a text
about proper programming, then don't forget to tell the people about VBR.
BTW, the stock LoadView(NULL) is not working on A4000, so forget about
this (and it's not working for 1.3!). And those double CEND are pure
stupidity, when C= doesn't say you need two of them for compatibility,
then you definitely DON'T need two (even your startup code doesn't need
that).
·Jolyon Ralph, you seem not to be interested in sharing information with
me. Well, I heard KillAGA is a bit useless to the most of the AGA users,
so I might become less interested in KillAGA. It's now your turn, you
should have my email address.
·Last but not least, I send encouragement to all those who made these
despicable lame programs, thus forcing me to spend lots of time writing
RunLameInfiltrator. Try to do a better job about compatibility, next
time. Using RunLameInfiltrator to make work your own written programs
should be a shame for you! One time diskmags will contain compatibility
ranking lists, I hope.
For bugreports, ideas, suggestions, improvements, questions and all other
concerning RunLameInfiltrator meet me on IRC on channel #amiga, #amiga! or
#amigager.